1. Field of the Invention
The present invention relates to the field of communications systems. More specifically, the present invention relates to improvements in channel-coding.
2. Brief Description of the Related Art
In communication systems, researchers and developers have sought ways to protect transmitted data from loss during transmission. One method of protecting transmitted data is channel-coding. Channel-coding involves adding redundant bits to the original data so that the receiver of a noisy or disruptive channel can detect and correct bit errors caused by the channel. Further detail is described in Siegmund M. Redl, et al., An Introduction to GSM, 110, 113 (1995). Two general methods of channel-coding are discussed in this description: block-coding and convolutional coding.
In block-coding, parity bits are added to the end of the data bits to be transmitted. Parity bits are used to check whether the data bits received contain errors. The number of parity bits added depends on the desired level of error-detection. Convolutional coding, as well understood in the art, involves applying a function to incoming bits to provide additional bits for transmission. Convolutional encoding allows for the proper reconstruction of the data stream at the receiving end, even though some bits may be corrupted during transmission.
When channel-coded data is received, the coded data must be decoded. Decoding processes that use the Viterbi algorithm rely upon the proper identification of the terminating state of the convolutional encoding. The failure to correctly identify the terminating state results in an improper decoding, and an improper data bit stream. The terminating state can be pre-defined by adding predefined tail bits to the bit stream before convolutional coding. This is a popular method in communication systems, and particularly in wireless systems, because the terminating state is known. The tail bits, however, are overhead to the communication system because the tail bits use bandwidth and do not provide error detection or correction.
Communication system designs attempt to reduce overhead, save bandwidth, improve efficiency, and improve the information bit rate. Due to the restricted transmission capacity allocated to communications systems, minimizing the number of bits needed for transmission is desirable. Tail bits, however, reduce the capacity of the system.
This efficiency loss is even greater when the number of information bits in a transmitted package is small, such as in voice data transmissions. For example, if there are 100 data bits and 3 tail bits to be transmitted, the percent of overhead is 3/103 or roughly 3%xe2x80x94small overhead. But if there are 10 data bits and 3 tail bits to be transmitted, the percent of overhead is 3/13 or roughly 23.1%xe2x80x94large overhead.
Sometimes, parity bits (an error detection code) are placed at the end of the information burst. Because the parity bits vary with each frame, the terminating state is not pre-defined as with the use of tail bits. Accordingly, the terminating state of the convolutional decoder is determined by using a number of trials, as well known in the art.
Accordingly, the use of parity bits is not, however, error free. Because the parity bits are limited in number, different data streams can result in the same parity bits. False PASS indications can result from the error detection process. The major cause of false PASS indications from the error detection process is the wide range that the parity bits vary with different trials of the terminating state. The greater the range that the parity bits may vary, the larger the probability of a false PASS detection. The large probability of false PASS detection can severely degrade the quality of communication service, such as degraded voice quality.
The inventors recognized a need to reduce the false PASS indications and to do so without increasing the number of bits transmitted. The present invention is an elegant approach which reduces the probability of false PASS detection while maintaining the performance of convolutional decoding that uses error detection (parity bits). In one embodiment of the invention, the parity or other error check bits are spread through the information burst, instead of being placed at the end of the burst. The combined data/parity frames are then convolutional encoded.
One aspect of the present invention involves a method of coding data, the method comprising the step of coding a sequence of data bits with parity bits to form an information block having a plurality of bits, wherein the parity bits are distributed in groups of one or more parity bits among the data bits.
In one embodiment, the method further involves convolutionally coding the information block to generate a coded information block. The method may also include the step of transmitting the coded information block over a communication channel. The communication channel may be a wireless communication channel, such as a GSM channel or other wireless communication channel.
In another embodiment, the communication channel is a wireline communication channel.
In yet another embodiment, the method further involves the steps of receiving the coded information block at a receiver, convolutionally decoding the coded information block, accumulating the parity bits, and checking the decoded data for errors based upon the parity bits. The parity bits may be distributed at fixed intervals among the data bits. In one embodiment, the fixed intervals begin after a majority of the data bits.
Another aspect of the present invention involves an error detecting decoder responsive to a coded information bit stream having error detection codes distributed within the coded information bit stream, the error detecting decoder comprises a reverse convolutional coding module, the reverse convolutional coding module having an error code assembly module which selects bits that are distributed in the coded information bit stream and provides the error detection code and a decoded information bit stream, and a reverse block coding module coupled to the reverse convolutional coding module and responsive to the error detection code to check for errors in the decoded information bit stream.
In one embodiment, the error detection code comprises parity bits. Advantageously, the parity bits are distributed evenly within the coded information stream.
Yet another aspect of the present invention involves a channel-encoder responsive to an input information bit stream. The channel-encoder has a block-coding module, the block-coding module responsive to the input information bit stream to calculate an error check code, and an error check code distribution module coupled to the block coding module, the error check code distribution module configured to distribute the error check code within the input information bit stream to generate a block-coded information bit stream.
In one embodiment, the channel coder further has a convolutional encoder, the convolutional encoder coupled to the error code distribution module and responsive to the block-coded information bit stream to generate a convolutional encoded information bit stream.